package com.yonglian.system.mapper;

import java.util.List;
import com.yonglian.system.domain.CmsProjectBase;
import com.yonglian.system.domain.CmsActivity;
import org.apache.ibatis.annotations.Param;

/**
 * 项目基础信息Mapper接口
 * 
 * @author gyok
 * @date 2024-05-28
 */
public interface CmsProjectBaseMapper 
{
    /**
     * 查询项目基础信息
     * 
     * @param id 项目基础信息主键
     * @return 项目基础信息
     */
    public CmsProjectBase selectCmsProjectBaseById(Long id);

    /**
     * 查询项目基础信息列表
     * 
     * @param cmsProjectBase 项目基础信息
     * @return 项目基础信息集合
     */
    public List<CmsProjectBase> selectCmsProjectBaseList(CmsProjectBase cmsProjectBase);

    /**
     * 新增项目基础信息
     * 
     * @param cmsProjectBase 项目基础信息
     * @return 结果
     */
    public int insertCmsProjectBase(CmsProjectBase cmsProjectBase);

    /**
     * 修改项目基础信息
     * 
     * @param cmsProjectBase 项目基础信息
     * @return 结果
     */
    public int updateCmsProjectBase(CmsProjectBase cmsProjectBase);

    /**
     * 批量新增项目基础信息
     *
     * @param cmsProjectBaseList 项目基础信息列表
     * @return 结果
     */
    public int batchInsertCmsProjectBase(List<CmsProjectBase> cmsProjectBaseList);

    /**
     * 批量更新项目基础信息
     *
     * @param cmsProjectBaseList 项目基础信息列表
     * @return 结果
     */
    public int batchUpdateCmsProjectBase(List<CmsProjectBase> cmsProjectBaseList);
    /**
     * 删除项目基础信息
     * 
     * @param id 项目基础信息主键
     * @return 结果
     */
    public int deleteCmsProjectBaseById(Long id);

    /**
     * 批量删除项目基础信息
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteCmsProjectBaseByIds(String[] ids);

    /**
     * 批量删除项目基础信息及名下所有子项
     * @param ids
     * @return
     */
    public int deleteCmsProjectBaseAllChildrenByProjectTypeIds(String[] ids);

    /**
     * 批量删除项目基础信息
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteCmsProjectBaseByProjectTypeIds(String[] ids);

    /**
     * 通过项目类型主键删除项目基础信息信息
     *
     * @param id 项目类型ID
     * @return 结果
     */
    public int deleteCmsProjectBaseByProjectTypeId(Long id);

    /**
     * 删除不在列表内的项目基础信息
     * @param projectTypeId
     * @param projectIdList
     * @return
     */
    public int deleteCmsProjectBaseByNotInList(@Param("projectTypeId") long projectTypeId, @Param("projectIdList") Long[] projectIdList);

    
}
